Scrapbox機能拡張から本体開発へ (daiiz)
Scrapbox Drinkup 2 Xmas Edition でのLT資料
こんばんは
daiiz.icon daiiz (飯塚 大貴)
Notaで/daiiz/スクボ.icon Scrapboxを作っています
/daiiz/Scrapboxとのなれそめ
ユーザー、インターンを経て、今月入社しました
マイブーム
自作スクボビューワーで横2画面構成にして、Streamを常に流しておくこと
左側で編集しているプロジェクトと別のStreamを流しておくのも、更新に気づけて便利です
https://gyazo.com/789ceddd53e85a3080c4b6f209b448e2
Scrapboxを好きなだけ拡張していく話をします
5分しかないですが二部構成です
UserScriptから始まり、Chrome拡張機能をリリースする話
インターンに参加してさらに拡張し、入社した話
見た目のカスタマイズや独自機能を付けたい
UserCSS、UserScriptでできる
/help-jp/UserCSS
projectの見た目をカスタマイズできる
/help-jp/UserScript
少々上級者向けの機能
自分に対してのみコードを実行できる
自分のページにコードを書けば、お手軽に実験できる
UserScriptドハマリ時期
/help-jp/APIを使って色々遊んでいた
Scrapbox上でプログラミングできる体験が新鮮だった
書いては実行して試す、の繰り返しが超簡単にできる
快適!
どうなるか?
ブラウザでのエラーを収集しているSentryのログに daiiz が入ったURLが大量に出てくる
Slackに流れてきて気付いてびっくり
clientでのスクボ本体のエラーが見えない状況
やばい
UserScriptのエラーを送信しないようにしたのがインターンでの初仕事
落ち着きを取り戻した
カスタマイズを共有したい
Drinkup 1 での交流でカスタマイズ話を沢山聞けて面白かった
/customizeを作った
CSSやJavaScriptのコードを見せ合う場所が欲しい
/shokai/工夫は共有されるべきに共感した
動いている様子をGyazo GIFで撮ったものを眺めているだけでも楽しい
コードが多少わからなくても、真似するものがあれば、自分流に調整できる
madobe.iconさんの /scrasobox が素晴らしい
新作が共有されると、毎回見に行って感激しています daiiz.icon
もっと実験しやすく、コードの更新を素早く伝えたい
Chrome拡張機能を作った
/customize/daiiz製のChrome拡張機能から入手可能
ストアを更新すると各clientが自動で最新状態が保たれるのがいい
機能ごとにON/OFFできる仕組みを考えた
Scrapboxから離れずに設定できるようにしたかったのでUserScriptで書けるようにした
code:js
$('body').attr('data-daiiz-rel-bubble', 'off'); // 関連ページを吹き出し表示する
$('body').attr('data-daiiz-text-bubble', 'on'); // リンク先ページのテキストを表示する
$('body').attr('data-daiiz-icon-button', 'on'); // アイコンをボタンにする
仕組み
MutationObserver を使って拡張機能側で data-daiiz-* 属性の変更を監視しておく
UserScriptで data-daiiz-* に対して値をセットする
拡張機能側で機能のON/OFFが切り替わる
主な機能
リンクをホバーして吹き出しを表示する
関連ページをその場で見れる
https://gyazo.com/e4be2e5d69e22459c13d5237c0033217
遷移先のページの内容をプレビューできる
/Chosakukenhoでの例
https://gyazo.com/f504e21a4b8cec998371ced10d993d2b
アイコンをボタンとして使う
[diary-button.icon]などと書くとボタンとして認識される
クリックするとdiary-buttonページ内の code:button.js が実行される
ScrapboxのUIを崩さずに好きなだけボタンを置ける
各種テンプレート、文字数カウント、TeXコードに変換するボタンなどに活用できる
Gyazoのメモ欄をスクボと連携する
https://gyazo.com/d6cce6636c355f32ced25e993038e9ca
インターン
/daiiz/Notaインターンに参加してScrapboxを作ってきました
社内のスクボが凄い
既存コンテンツがそのまま daiiz.icon 向けの教科書に早変わりする
新メンバーでも必要なページが自然と見つかる
一旦ページに入ると、次に読むとよいページが湧いてくる
いま知りたいこととは直接的には関係ないが、関連性はある、周辺知識を吸収できる
/daiiz/コードリーディングするときにScrapboxを使うと捗る
気になるものから作る
作ってからでないと良し悪しがわからないものもある
前から作りたかった機能を付けてみたりしたが、しっくり来なかったりした
window.scrapboxを拡張させた
https://gyazo.com/f530dbf4ea5e7d15fc049f01b7734413
これまで daiiz.icon が自前で拡張していたことを、標準機能でやりやすく
TimeStamp
Ctrl+Tで日時を入力できる
UserScriptから好きなフォーマットを設定できる
/shokai/Page Menu
見出しメニューなどを作れる
https://gyazo.com/baf1de8ad1095fe50951d4ae65bc6de2
一つのページにメンバー各々の意見を書いているときなど、各人の行にジャンプしやすくて便利
https://gyazo.com/e3c58456416d0ec4dca057163d356575/thumb/300.png
Scrapbox本体機能への初コミット
/daiiz/モバイルでのScrapboxページ編集
外出先からも書きたい daiiz.icon
エディタの実装を学んで、モバイルにも応用した
テキスト範囲選択のUIがよくできて気に入っている
大雑把に始点・終点をなぞればいい
最近、普通ののウェブページ上でもやってしまう
書きやすくなっているはず
/daiiz/草津旅行 (昔)
/daiiz/箱根温泉旅行 (最近)
入社
いちユーザーとして始めた機能拡張の最終進化
とにかくワクワクしている
Scrapboxを作り続けます
shokai.icon /shokai/Scrapboxの哲学の関連記事を何度も読んで勉強
自分だけの用途にしばられた機能にならないように気をつける
究極の書きやすさと議論のしやすさ、書き溜めた情報を繋いで活かせる世界を目指したい